home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / MATHEMAT / STATISTI / 0850B.ZIP / SET2.ARC / CORR-DIS.PAS < prev    next >
Pascal/Delphi Source File  |  1979-12-31  |  3KB  |  113 lines

  1. (*LINEAR CORRELATION*)
  2. VAR SWITCH4,DF,TEMP,Y,NUMSAMPS,I,SWITCH:INTEGER;
  3.     COEFF,XCOOR,YCOOR,SUMX,SUMY,SUMXSQR,SUMYSQR, SUMXTIMESY,
  4.     A1,A2,A3,A4,L,X,FACTOR1,FACTOR2,RIGHTTAIL,TVALUE,CRIT52,CRIT51,CRIT12,CRIT11:REAL;
  5.     SWITCH3,C:CHAR;
  6.     SWITCH2,LESSTHANONE:BOOLEAN;
  7. {$I B:REALRAIS}
  8. {$I B:INTRAISE}
  9. PROCEDURE FINDCRITICALVALUES (DEGFREE:INTEGER);
  10. VAR TEMP1,TEMP2:REAL;
  11. PROCEDURE VALS(C52,C51,C12,C11:REAL);
  12. BEGIN
  13. CRIT52:=C52;
  14. CRIT51:=C51;
  15. CRIT12:=C12;
  16. CRIT11:=C11;
  17. END;
  18. PROCEDURE LOOKUP (DF:INTEGER);
  19. BEGIN
  20. CASE DF OF
  21. 1: VALS(0.988, 0.997, 0.9995, 0.9999);
  22. 2: VALS(0.900, 0.950, 0.980, 0.990);
  23. 3: VALS(0.805, 0.878, 0.934, 0.959);
  24. 4: VALS(0.729, 0.811, 0.882, 0.917);
  25. 5: VALS(0.669, 0.754, 0.833, 0.874);
  26. 6: VALS(0.622, 0.707, 0.789, 0.824);
  27. 7: VALS(0.582, 0.666, 0.750, 0.798);
  28. 8: VALS(0.549, 0.632, 0.716, 0.765);
  29. 9: VALS(0.512, 0.602, 0.685, 0.735);
  30. 10: VALS(0.497, 0.576, 0.658, 0.708);
  31. END;
  32. END;
  33. BEGIN
  34. LOOKUP (DEGFREE);
  35. IF NUMSAMPS<12 THEN BEGIN
  36. WRITE ('THE CRITICAL VALUE AT .05 (ONE TAILED) IS: ');
  37. WRITELN (CRIT52:5:4);
  38. WRITE ('THE CRITICAL VALUE AT .05 (TWO TAILED) IS: ');
  39. WRITELN (CRIT51:5:4);
  40. WRITE ('THE CRITICAL VALUE AT .01 (ONE TAILED) IS: ');
  41. WRITELN (CRIT12:5:4);
  42. WRITE ('THE CRITICAL VALUE AT .01 (TWO TAILED) IS: ');
  43. WRITELN (CRIT11:5:4);
  44. IF SWITCH4=1 THEN BEGIN
  45. WRITELN (LST,'THE CRITICAL VALUE AT .05 (ONE TAILED) IS: ',CRIT52:5:4);
  46. WRITELN (LST,'THE CRITICAL VALUE AT .05 (TWO TAILED) IS: ',CRIT51:5:4);
  47. WRITELN (LST,'THE CRITICAL VALUE AT .01 (ONE TAILED) IS: ',CRIT12:5:4);
  48. WRITELN (LST,'THE CRITICAL VALUE AT .01 (TWO TAILED) IS: ',CRIT11:5:4);
  49. END;
  50. END
  51. ELSE BEGIN
  52. TVALUE:=(COEFF*SQRT(NUMSAMPS-2))/SQRT(1-SQR(COEFF));
  53. A1:=0.196854;
  54. A2:=0.115194;
  55. A3:=0.000344;
  56. A4:=0.019527;
  57. Y:=1;
  58. TVALUE:=SQR(TVALUE);
  59. DF:=NUMSAMPS-2;
  60. LESSTHANONE:=FALSE;
  61. IF TVALUE<1.0 THEN BEGIN
  62. TVALUE:=1/TVALUE;
  63. TEMP:=Y;
  64. Y:=DF;
  65. DF:=TEMP;
  66. LESSTHANONE:=TRUE;
  67. END;
  68. FACTOR1:=2/(9 * Y);
  69. FACTOR2:=2/(9 * DF);
  70. L:=ABS(REALRAIS(TVALUE,0.333333)*(1-FACTOR2)-1+FACTOR1)/
  71.     SQRT((FACTOR1+REALRAIS(TVALUE,0.666667)*FACTOR2));
  72. IF DF<4 THEN L:=L*(1+0.08*INTRAISE(DF,3));
  73. X:=0.25/INTRAISE((1+L*(A1+L*(A2+L*(A3+L*A4)))),4);
  74. IF LESSTHANONE THEN RIGHTTAIL:=1-X
  75. ELSE RIGHTTAIL:=X;
  76. WRITELN;
  77. WRITELN ('SIGNIFICANCE = ',RIGHTTAIL:7:6);
  78. IF SWITCH4=1 THEN BEGIN
  79. WRITELN (LST,'SIGNIFICANCE = ',RIGHTTAIL:7:6);
  80. END;
  81. END;
  82. END;
  83. BEGIN
  84. WRITELN ('CORRELATION COEFFICIENT SIGNIFICANCE');
  85. WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
  86. READLN (SWITCH3);
  87. IF SWITCH3='Y' THEN SWITCH4:=1;
  88. IF SWITCH3='y' THEN SWITCH4:=1;
  89. IF SWITCH4=1 THEN BEGIN
  90. WRITELN (LST,'CORRELATION COEFFICIENT SIGNIFICANCE');
  91. END;
  92. WRITELN;
  93. REPEAT
  94. WRITE ('CORRELATION COEFFICIENT = ');
  95. READLN (COEFF);
  96. WRITE ('NUMBER OF PAIRS: ');
  97. READLN (NUMSAMPS);
  98. IF SWITCH4=1 THEN BEGIN
  99. WRITELN (LST,'CORRELATION COEFFICIENT = ',COEFF);
  100. WRITELN (LST,'NUMBER OF PAIRS: ',NUMSAMPS);
  101. END;
  102. FINDCRITICALVALUES (NUMSAMPS-1);
  103. WRITE ('DO YOU WANT ANOTHER RUN, (Y/N): ');
  104. READLN (C);
  105. WHILE NOT (C IN ['Y','y','n','N']) DO
  106. BEGIN
  107. WRITE ('TYPE Y FOR YES, OR N FOR NO: ');
  108. READLN (C)
  109. END;
  110. SWITCH2:=C IN ['N','n'];
  111. UNTIL SWITCH2
  112. END.
  113.